
9729: GENKEYPAIR: valid data should work
TestPKEncrypt_PKDecrypt(GENKEYPAIR,CRYPTO_CONTEXT,ValidPubKey,ValidPrivKey)

9733: PKEncrypt: valid data should work
TestPKEncrypt_PKDecrypt(ENCRYPT,CRYPTO_CONTEXT,pubKey,ValidRandBufIn,ValidCipher)

9741:PKEncrypt_PKDecrypt and PKSign_PKVerify : valid data should work well together
TestPKEncrypt_PKDecrypt(GENKEYPAIR,CRYPTO_CONTEXT,ValidPubKey,ValidPrivKey,ValidCipher)
TestPKSign_PKVerify(PKSIGN,CRYPTO_CONTEXT,ValidPrivKey,PlainKey,PlainKeyLength,ValidSign)

9751:GENKEYPAIR, PKEncrypt, PKDecrypt, PKSign, PKVerify : valid data should work well together
TestPKEncrypt_PKDecrypt(GENKEYPAIR,CRYPTO_CONTEXT,ValidPubKey,ValidPrivKey,ValidCipher)
TestPKSign_PKVerify(PKSIGN,CRYPTO_CONTEXT,ValidPrivKey,PlainKey,PlainKeyLength,ValidSign)
TestPKSign_PKVerify(PKVERIFY,CRYPTO_CONTEXT,ValidPubKey,PlainKey,PlainKeyLength,ValidSign)

9909: DRMCipher_Decrypt: valid data should work
TestDRMCipher_Init(7 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)
TestDRMCipher_Encrypt(NORMAL CipherContext, 54)
TestDRMCipher_Decrypt(54 KeyLength,54 BytesEncryptedContentKey,NORMAL CipherContext)

9913: TestShaUpdate: valid data should work
TestGenRandomData(0, 64 bytes)
TestShaInit
TestShaUpdate(0, 64 BytesData)
TestShaDone(1)
TestShaInit
TestShaUpdate(0, 64 BytesData)
TestShaDone(2)
TestMemComp(1, 2, 20 SHA_DIGEST_LEN)

10583: TestHMACDone: valid data should work
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACAdd(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACDone(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)

10584: DRM_rc4: valid data should work
TestDRM_rc4(NORMAL RC4_KEYSTRUCT, 8 BytesSizeOfRC4Key, 1000 BytesSizeOfDataEncrypt_Decrypt)

10585: Deskey_Deskey: valid data should work
TestDeskey_Des(NORMAL DESTable, 8 BytespKey, 8 BytespbIn, 8 BytespbOut)

10586: CBC64WS4_asm: valid data should work
TestCBC64WS4_asm(54 BytesData)
TestInvCBC64WS4_asm(54 BytesData)

-------------------BVT ends here--------------------------

9730: PKGenKeyPair: NULL pub key should fail
TestPKEncrypt_PKDecrypt(GENKEYPAIR,CRYPTO_CONTEXT,NULL,ValidPrivKey)=-2147024809(DRM_E_INVALIDARG)


9731: PKGenKeyPair: NULL priv key should fail
TestPKEncrypt_PKDecrypt(GENKEYPAIR,CRYPTO_CONTEXT,ValidPubKey,NULL)=-2147024809(DRM_E_INVALIDARG)


9732: PKGenKeyPair: NULL CRYPTO_CONTEXT should fail
TestPKEncrypt_PKDecrypt(GENKEYPAIR,NULL,ValidPubKey,ValidPrivKey)=-2147024809(DRM_E_INVALIDARG)


9734: PKEncrypt: NULL Crypto Context should fail
TestPKEncrypt_PKDecrypt(ENCRYPT,NULL,pubKey,ValidRandBufIn,ValidCipher)=-2147024809(DRM_E_INVALIDARG)

9735: PKEncrypt: NULL pub key should fail
TestPKEncrypt_PKDecrypt(ENCRYPT,CRYPTO_CONTEXT,NULL,ValidRandBufIn,ValidCipher)=-2147024809(DRM_E_INVALIDARG)


9736: PKEncrypt: NULL BufferIn for encryption should fail
TestPKEncrypt_PKDecrypt(ENCRYPT,CRYPTO_CONTEXT,pubKey,NULL,ValidCipher)=-2147024809(DRM_E_INVALIDARG)


9737: PKEncrypt: pubkey mismatch should not get the same content after encrypt and decrypt
TestPKEncrypt_PKDecrypt(ENCRYPT,CRYPTO_CONTEXT,PubKey2,ValidRandBufIn,ValidCipher)=-2147467259(DRM_E_FAIL)

9738: PKDecrypt: private key mismatch should not get the same content after encrypt and decrypt
TestPKEncrypt_PKDecrypt(DECRYPT,CRYPTO_CONTEXT,PrivKey2,ValidCipher,ValidBufOut)=-2147467259(DRM_E_FAIL)

9739: PKEncrypt: NULL out cipher for encryption should fail
TestPKEncrypt_PKDecrypt(ENCRYPT,CRYPTO_CONTEXT,pubKey,ValidRandBufIn,NULL)=-2147024809(DRM_E_INVALIDARG)

9740: PKSign: Valid data should work;
TestPKSign_PKVerify(PKSIGN,CRYPTO_CONTEXT,ValidPrivKey,PlainKey,PlainKeyLength,ValidSign)

9742: PKSign: NULL CRYPTO_CONTEXT should fail
TestPKSign_PKVerify(PKSIGN,NULL,ValidPrivKey,PlainKey,PlainKeyLength,ValidSign)=-2147024809(DRM_E_INVALIDARG)

9743: PKSign: NULL PrivKey should fail
TestPKSign_PKVerify(PKSIGN,CRYPTO_CONTEXT,NULL,PlainKey,PlainKeyLength,ValidSign)=-2147024809(DRM_E_INVALIDARG)

9744: PKSign: NULL PlainKey should fail
TestPKSign_PKVerify(PKSIGN,CRYPTO_CONTEXT,ValidPrivKey,NULL,PlainKeyLength,ValidSign)=-2147024809(DRM_E_INVALIDARG)

9745: PKSign: Zero PlainKeyLength should fail
TestPKSign_PKVerify(PKSIGN,CRYPTO_CONTEXT,ValidPrivKey,PlainKey,0,ValidSign)=-2147024809(DRM_E_INVALIDARG)

9746: PKSign: NULL signature should fail
TestPKSign_PKVerify(PKSIGN,CRYPTO_CONTEXT,ValidPrivKey,PlainKey,PlainKeyLength,NULL)=-2147024809(DRM_E_INVALIDARG)

9747: PKSign:  mismatch PrivKey should fail
TestPKSign_PKVerify(PKSIGN,CRYPTO_CONTEXT,PrivKey2,PlainKey,PlainKeyLength,ValidSign)=-2147467259(DRM_E_FAIL)


9748: PKVerify:  Valid data should work
TestPKSign_PKVerify(PKVERIFY,CRYPTO_CONTEXT,ValidPubKey,PlainKey,PlainKeyLength,ValidSign)


9749: PKVerify:  NULL CRYPTO_CONTEXT should fail
TestPKSign_PKVerify(PKVERIFY,NULL,ValidPubKey,PlainKey,PlainKeyLength,ValidSign)=-2147467259(DRM_E_FAIL)


9750: PKVerify:  NULL PubKey should fail
TestPKSign_PKVerify(PKVERIFY,CRYPTO_CONTEXT,NULL,PlainKey,PlainKeyLength,ValidSign)=-2147467259(DRM_E_FAIL)

9752:PKVERIFY: mismatch pubKey should fail
TestPKSign_PKVerify(PKVERIFY,CRYPTO_CONTEXT,PubKey2,PlainKey,PlainKeyLength,ValidSign)= -2147467259(DRM_E_FAIL)


9753:PKVERIFY: zero PlainKeyLength should fail
TestPKSign_PKVerify(PKVERIFY,CRYPTO_CONTEXT,ValidPubKey,PlainKey,0,ValidSign)= -2147467259(DRM_E_FAIL)


9754:PKVERIFY: NULL PlainKey should fail
TestPKSign_PKVerify(PKVERIFY,CRYPTO_CONTEXT,ValidPubKey,NULL,PlainKeyLength,ValidSign)= -2147467259(DRM_E_FAIL)


9755:PKVERIFY: NULL ValidSign should fail
TestPKSign_PKVerify(PKVERIFY,CRYPTO_CONTEXT,ValidPubKey,PlainKey,PlainKeyLength,NULL)= -2147467259(DRM_E_FAIL)

9888: DRMCipher_Init: valid data with clear content should work
TestDRMCipher_Init(7 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)

9889: DRMCipher_Init: valid data with blob content key should work
TestDRMCipher_Init(7 KeyLength,7 BytesBlobContentKey,NORMAL CipherContext)

9890: DRMCipher_Init: valid data with shorter than 56 bits clear content key should work
TestDRMCipher_Init(7 KeyLength,2 BytesClearContentKey,NORMAL CipherContext)

9891: DRMCipher_Init: valid data with longer than 56 bits clearcontent key should work
TestDRMCipher_Init(7 KeyLength,128 BytesClearContentKey,NORMAL CipherContext)

9892: DRMCipher_Init: NULL content key should fail
TestDRMCipher_Init(7 KeyLength,NULL,NORMAL CipherContext) =-2147024809(DRM_E_INVALIDARG)

9893: DRMCipher_Init: length of cbContKey is shorter than the size of content key should work by design
TestDRMCipher_Init(6 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)

9894: DRMCipher_Init: length of cbContKey is longer than the size of content key
TestDRMCipher_Init(16 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)

9895: DRMCipher_Init: Zero length of cbContKey should fail
TestDRMCipher_Init(0 KeyLength,7 BytesClearContentKey,NORMAL CipherContext) =-2147024809(DRM_E_INVALIDARG)

9896: DRMCipher_Init: NULL pointer to a DRM_CIPHER_CONTEXT structure should fail
TestDRMCipher_Init(7 KeyLength,7 BytesClearContentKey,NULL) =-2147024809(DRM_E_INVALIDARG)

9897: DRMCipher_Encrypt: valid data with clear content key should work
TestDRMCipher_Init(7 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)
TestDRMCipher_Encrypt(NORMAL CipherContext, 54)

'''BUGBUG... 3348
'9898: DRMCipher_Encrypt: Encrypt without Init should fail,But Error checking is left out intentiallaly for performance reasons. 
'''TestDRMCipher_Init(7 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)
'TestDRMCipher_Encrypt(NORMAL CipherContext, 54)

9899: DRMCipher_Encrypt: Encrypt with tiny key should work
TestDRMCipher_Init(7 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)
TestDRMCipher_Encrypt(NORMAL CipherContext, 9)

9900: DRMCipher_Encrypt: Encrypt with big key should work
TestDRMCipher_Init(7 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)
TestDRMCipher_Encrypt(NORMAL CipherContext, 102400)

9901: DRMCipher_Init: Multiple calls should work
TestDRMCipher_Init(7 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)
TestDRMCipher_Init(7 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)
TestDRMCipher_Init(7 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)
TestDRMCipher_Init(7 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)
TestDRMCipher_Init(7 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)
TestDRMCipher_Init(7 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)

9902: DRMCipher_Encrypt: Multiple calls should work
TestDRMCipher_Init(7 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)
TestDRMCipher_Encrypt(NORMAL CipherContext, 102400)
TestDRMCipher_Encrypt(NORMAL CipherContext, 102400)
TestDRMCipher_Encrypt(NORMAL CipherContext, 102400)
TestDRMCipher_Encrypt(NORMAL CipherContext, 102400)
TestDRMCipher_Encrypt(NORMAL CipherContext, 102400)
TestDRMCipher_Encrypt(NORMAL CipherContext, 102400)
TestDRMCipher_Encrypt(NORMAL CipherContext, 102400)
TestDRMCipher_Encrypt(NORMAL CipherContext, 102400)
TestDRMCipher_Encrypt(NORMAL CipherContext, 102400)

9910: DRMCipher_Decrypt: Decrypt should fail if cbData is zero
TestDRMCipher_Init(7 KeyLength,7 BytesClearContentKey,NORMAL CipherContext)
TestDRMCipher_Encrypt(NORMAL CipherContext, 54)
TestDRMCipher_Decrypt(0 KeyLength,54 BytesEncryptedContentKey,NORMAL CipherContext)=-2147467259(DRM_E_FAIL)

''''''SHA test''''''''


9914: TestShaUpdate: Add different size of data to hash multiple times should work
TestGenRandomData(0, 50 bytes)
TestGenRandomData(1, 12 bytes)
TestGenRandomData(2, 26 bytes)
TestGenRandomData(3, 20 bytes)
TestShaInit
TestShaUpdate(0, 50 BytesData)
TestShaUpdate(1, 12 BytesData)
TestShaUpdate(2, 26 BytesData)
TestShaUpdate(3, 20 BytesData)
TestShaDone(4)
TestShaInit
TestShaUpdate(0, 50 BytesData)
TestShaUpdate(1, 12 BytesData)
TestShaUpdate(2, 26 BytesData)
TestShaUpdate(3, 20 BytesData)
TestShaDone(5)
TestMemComp(4, 5, 20 SHA_DIGEST_LEN)

10317: TestShaUpdate: Add a big chunk of data should work
TestGenRandomData(0, 102400 bytes)
TestGenRandomData(1, 204800 bytes)
TestShaInit
TestShaUpdate(0, 102400 BytesData)
TestShaUpdate(1, 204800 BytesData)
TestShaDone(2)
TestShaInit
TestShaUpdate(0, 102400 BytesData)
TestShaUpdate(1, 204800 BytesData)
TestShaDone(3)
TestMemComp(2, 3, 20 SHA_DIGEST_LEN)

''''''''''HMAC'''''''''''
9925: TestHMACInit: valid data should initial the HMAC context properly
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)

9926: TestHMACInit: NULL HMAC_CONTEXT should fail
TestHMACInit(NULL,20 BytesKey,20 SHA_DIGEST_LEN)=-2147024809(DRM_E_INVALIDARG)

9927: TestHMACInit: NULL pbKey should fail
TestHMACInit(NORMAL HMAC_CONTEXT,NULL,20 SHA_DIGEST_LEN)=-2147024809(DRM_E_INVALIDARG)

9929: TestHMACInit: zero cbKey length should fail
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,0 SHA_DIGEST_LEN)=-2147024809(DRM_E_INVALIDARG)

9930: TestHMACInit: valid data should work
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)

9931: TestHMACInit: size of pbKey larger than the cbKey length should work
TestHMACInit(NORMAL HMAC_CONTEXT,1000 BytesKey,20 SHA_DIGEST_LEN)

11252: TestHMACInit: Multiple Init should work
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)

9934: TestHMACAdd: 100 bytes data and length of data should work
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACAdd(NORMAL HMAC_CONTEXT,100 BytesKey,100 SHA_DIGEST_LEN)

9935: TestHMACAdd: large data should work
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACAdd(NORMAL HMAC_CONTEXT,500000 BytesKey,32 SHA_DIGEST_LEN)

9936: TestHMACAdd: valid data should work
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACAdd(NORMAL HMAC_CONTEXT,128 BytesKey,46 SHA_DIGEST_LEN)


9938: TestHMACDone: multiple call should work
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACAdd(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACDone(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACDone(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACDone(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACDone(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)

9939: TestHMACDone: large data should work
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACAdd(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACDone(NORMAL HMAC_CONTEXT,10000 BytesKey,20 SHA_DIGEST_LEN)

9940: TestHMACDone: cbKeyedHash > 21 should fail
TestHMACInit(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACAdd(NORMAL HMAC_CONTEXT,20 BytesKey,20 SHA_DIGEST_LEN)
TestHMACDone(NORMAL HMAC_CONTEXT,21 BytesKey,21 SHA_DIGEST_LEN)=-2147024809(DRM_E_INVALIDARG)

''''''''RC4'''''''''

9942: DRM_rc4: key size over 65 bytes should work
TestDRM_rc4(NORMAL RC4_KEYSTRUCT, 65 BytesSizeOfRC4Key, 1000 BytesSizeOfDataEncrypt_Decrypt)

9943: DRM_rc4: large chunk of data to encrypt/decrypt should work
TestDRM_rc4(NORMAL RC4_KEYSTRUCT, 8 BytesSizeOfRC4Key, 1000000 BytesSizeOfDataEncrypt_Decrypt)

9944: DRM_rc4: multiple call to encrypt/decrypt should work
TestDRM_rc4(NORMAL RC4_KEYSTRUCT, 8 BytesSizeOfRC4Key, 100 BytesSizeOfDataEncrypt_Decrypt)
TestDRM_rc4(NORMAL RC4_KEYSTRUCT, 8 BytesSizeOfRC4Key, 100 BytesSizeOfDataEncrypt_Decrypt)
TestDRM_rc4(NORMAL RC4_KEYSTRUCT, 8 BytesSizeOfRC4Key, 100 BytesSizeOfDataEncrypt_Decrypt)

9946: Deskey_Deskey: Deskey size is 7 bytes should work
TestDeskey_Des(NORMAL DESTable, 8 BytespKey, 10 BytespbIn, 10 BytespbOut)

9947: Deskey_Deskey: Deskey size is less than 7 bytes should work
TestDeskey_Des(NORMAL DESTable, 6 BytespKey, 1024 BytespbIn, 1024 BytespbOut)

9948: Deskey_Des: multiple call should work
TestDeskey_Des(NORMAL DESTable, 1000 BytespKey, 1000000 BytespbIn, 1000000 BytespbOut)
TestDeskey_Des(NORMAL DESTable, 1000 BytespKey, 1000000 BytespbIn, 1000000 BytespbOut)
TestDeskey_Des(NORMAL DESTable, 1000 BytespKey, 1000000 BytespbIn, 1000000 BytespbOut)
TestDeskey_Des(NORMAL DESTable, 1000 BytespKey, 1000000 BytespbIn, 1000000 BytespbOut)

''''''''''CBC''''''''''

9950: CBC64WS4_asm: Large data should work
TestCBC64WS4_asm(100000 BytesData)
TestInvCBC64WS4_asm(100000 BytesData)

9951: CBC64WS4_asm: data less than 8 bytes should work
TestCBC64WS4_asm(7 BytesData)
